package com.zdpx.pxframework.database.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;

/**
 * 数据库配置类
 *
 * @Description
 * @Author Cheng XiaoXiao
 * @Date 2020/11/4 10:26
 * @Version 1.0
 */
@Data
@ConfigurationProperties("px.database")
public class DatabaseProperties {
    /**
     * 数据库配置信息
     */
    private DatabaseConfig globalConfig = new DatabaseConfig();

    @Data
    public static class DatabaseConfig {
        /**
         * 是否开启逻辑删除
         */
        private Boolean enableLogicDelete = true;
        /**
         * 逻辑删除字段
         */
        private String logicDeleteField = "deleteStatus";
        /**
         * 逻辑已删除值(默认为 1)
         */
        private String logicDeleteValue = "1";
        /**
         * 逻辑未删除值(默认为 0)
         */
        private String logicNotDeleteValue = "0";


        /**
         * 是否开启创建时间字段
         */
        private Boolean enableCreateTime = true;

        /**
         * 创建时间字段
         */
        private String createTimeField = "createTime";

        /**
         * 是否开启更新时间字段
         */
        private Boolean enableUpdateTime = true;

        /**
         * 更新时间
         */
        private String updateTimeField = "updateTime";

        /**
         * 是否开启乐观锁版本号字段
         */
        private Boolean enableVersion = true;

        /**
         * 版本号字段
         */
        private String versionField = "version";

        /**
         * 是否开启创建人信息
         */
        private Boolean enableCreator = true;

        /**
         * 创建人字段
         */
        private String creatorField = "creator";

        /**
         * 是否开启更新人信息
         */
        private Boolean enableEditor = true;

        /**
         * 更新人字段
         */
        private String editorField = "editor";

    }

    /**
     * 数据源信息
     */
    private DataSourceConfig dataSourceConfig = new DataSourceConfig();

    @Data
    public static class DataSourceConfig {
        /**
         * 用户名
         */
        private String username;
        /**
         * 密码
         */
        private String password;
        /**
         * 驱动类
         */
        private String driverClassName;
        /**
         * 链接字符串
         */
        private String url;
    }

}
